/*
        【编号：514】
        一个大V直播抽奖，奖品是现金红包，分别有{2,588,888,1000,10000}五个奖金。
        请使用代码模拟抽奖，打印出每个奖项，奖项的出现顺序要随机且不重复。打印效果如下：（随机顺序，不一定是下面的顺序）

        888元的奖金被抽出
        588元的奖金被抽出
        10000元的奖金被抽出
        1000元的奖金被抽出
        2元的奖金被抽出
 */
import java.util.Random;

public class Hw514LotteryDraw {
    public static void main(String[] args) {

        int[] reward = {2, 588, 888, 1000, 10000};
        int[] num = new int[reward.length];
        boolean Change = false;
        Random rd = new Random();

        /*
        优化- 数组去重 - 回退
        for (int i = 0; i < num.length; i++) {
                num[i] = rd.nextInt(5);
                 for (int j = 0; j < num.length; j++){
                        if(i != j && num[i] == num[j]){
                                i--;//回退
                                break;
                        }
                 }
        }
        */

        //排查重复 *思路一 输入一个,排查之前已输入是否有重复(入栈)(该类型 详见Extend04RedBlueLotte思路二 )
        System.out.println("生成随机顺序为");
        for (int i = 0; i < num.length; i++) {
            num[i] = rd.nextInt(5);
            if (i > 0) {
                int j = 0;
                while (j != -1) {
                    j = i - 1;
                    lo:while (j >= 0) {
                        while (num[i] == num[j]) {//只有产生相同值时会运行多次,如果范围较小则效率高,否则可以简化为if
                            num[i] = rd.nextInt(5);
                            break lo;
                        }
                        j--;
                    }
                }
            }
            System.out.print(num[i] + " ");
        }
        System.out.println();

        for(int i = 0;i < reward.length;i++){
            System.out.println(reward[num[i]] + "元已被抽出");
        }

    }
}
